# -*- coding: utf-8 -*-
# authors 13077/13130
# data: 30 de Novembro de 2014
#

from sqlalchemy import Column, Integer, REAL
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class IPC(Base):
    __tablename__ = 'ipc'

    ano = Column(Integer, primary_key=True)
    ipc = Column(REAL)
    va = Column(REAL)
    rem_min = Column(REAL)
    rem_max = Column(REAL)
    pib_per_cap = Column(REAL)
    rnb_per_cap_an = Column(REAL)
    rdb_per_cap_an = Column(REAL)
    rem_per_cap = Column(REAL)

    ATTR_ANO = 'ano'
    ATTR_IPC = 'ipc'
    ATTR_VA = 'va'
    ATTR_REM_MIN = 'rem_min'
    ATTR_REM_MAX = 'rem_max'
    ATTR_PIB_PER_CAP = 'pib_per_cap'
    ATTR_RNB_PER_CAP = 'rnb_per_cap_an'
    ATTR_RDB_PER_CAP = 'rdb_per_cap_an'
    ATTR_REM_PER_CAP = 'rem_per_cap'

    def __init__(self, lst):
        """
        Class constructor.
        :param lst: List of nine attributes
        """
        self.ano = lst[0]
        self.ipc = lst[1]
        self.va = lst[2]
        self.rem_min = lst[3]
        self.rem_max = lst[4]
        self.pib_per_cap = lst[5]
        self.rnb_per_cap_an = lst[6]
        self.rdb_per_cap_an = lst[7]
        self.rem_per_cap = lst[8]

    def get_from_attribute(self, attribute):
        """
        Returns the value of the object's attribute based on its name
        :param attribute: Name of the attribute
        :return: Value of the attribute
        """
        if attribute == self.ATTR_ANO:
            return self.ano
        elif attribute == self.ATTR_IPC:
            return self.ipc
        elif attribute == self.ATTR_VA:
            return self.va
        elif attribute == self.ATTR_REM_MIN:
            return self.rem_min
        elif attribute == self.ATTR_REM_MAX:
            return self.rem_max
        elif attribute == self.ATTR_PIB_PER_CAP:
            return self.pib_per_cap
        elif attribute == self.ATTR_RNB_PER_CAP:
            return self.rnb_per_cap_an
        elif attribute == self.ATTR_RDB_PER_CAP:
            return self.rdb_per_cap_an
        elif attribute == self.ATTR_REM_PER_CAP:
            return self.rem_per_cap